package com.zxy.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 课程合同实体类
 * 对应数据库表：course_contract
 */
@Data
@TableName("course_contract") // 绑定数据库表名
public class CourseContract {

    /**
     * 主键ID
     *
     */
    @TableId(type = IdType.ASSIGN_ID) //雪花算法生成
    private Long id;

    /**
     * 合同编号
     */
    @TableField("contract_no") // 数据库字段名（若实体字段与表字段一致可省略，此处为示例）
    private String contractNo;

    /**
     * 用户姓名
     */
    private String name;

    /**
     * 用户手机号
     */
    private String phone;

    /**
     * 科目（1：语文；2：数学；3：英语等，建议后续用枚举类优化）
     */
    private String subject;

    /**
     * 渠道（0：官网；1：小程序；2：线下等，建议后续用枚举类优化）
     */
    private String channel;

    /**
     * 活动ID
     */
    private Integer activityId;

    /**
     * 课程ID
     */
    private Integer courseId;

    /**
     * 状态（1：待付款；2：已取消；4：已付款等，建议后续用枚举类优化）
     */
    private String status;

    /**
     * 合同文件路径
     */
    @TableField("file_name")
    private String fileName;

    /**
     * 课程原价
     */
    @TableField("course_price")
    private BigDecimal coursePrice;

    /**
     * 折扣类型
     */
    @TableField("discount_type")
    private String discountType;

    /**
     * 订单实付金额（原字段名order为SQL关键字，修改为orderAmount）
     */
    @TableField("order_amount") // 映射数据库字段order_amount
    private BigDecimal orderAmount;

    /**
     * 完成时间
     */
    @TableField("finish_time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date finishTime;

    /**
     * 业务ID（预留）
     */
    @TableField("business_id")
    private Long businessId;

    /**
     * 部门ID
     */
    @TableField("dept_id")
    private Integer deptId;

    /**
     * 创建人（MyBatis-Plus自动填充，需配置填充器）
     */
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间（MyBatis-Plus自动填充）
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
//    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新人（MyBatis-Plus自动填充）
     */
    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /**name
     * 更新时间（MyBatis-Plus自动填充）
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
//    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 归属人id关联用户表
     */
    private Long ownerId;

    /**
     * 商机关联id
     */
    private Long customerId;

}